//==================================================================
// Created by Sun Jiang
// Email: sunjiang@paracs.com,
//        sunjiang1993@126.com
// Date: 2025-01-10, 11:40:25
// Copyright (c) 2021-2025 YUHAI.  All Right Reserved!
//===================================================================

/**
 * Descriptions:
 * \brief 概要信息
 * \details 详细描述
 */

#ifndef BLAS_H
#define BLAS_H

#include <vector>
#include <iostream>
#include <random>
#if defined(USE_PARALLEL)
#include <omp.h>
#include <mpi.h>
#endif

/**
 * 创建长度为N，初始值为x0的数组
 * @param x 建立的数组x
 * @param N 数组长度
 * @param x0 数组初始值: 默认为0
 */
void vector_creat(std::vector<double>& x, int N, double x0 = 0.0);

/**
 * 创建长度为N，在[xmin, xmax]范围中随机分布的数组
 * @param x 建立的数组x
 * @param N 数组长度
 * @param xmin 数组中最小值
 * @param xmax 数组中最大值
 */
void vector_creat_random(std::vector<double>& x, int N, double xmin=0.0, double xmax=1.0);

/**
 * 计算向量点积：dot = x[0]*y[0] + x[1]*y[1] + ... + x[n]*y[n]
 * @param x 向量1
 * @param y 向量2
 * @return 向量点积
 */
double dot(const std::vector<double>& x, const std::vector<double>& y);

#endif //BLAS_H
